package com.example.demo.controller;

import com.example.demo.model.*;
import com.example.demo.service.AdminService;
import com.example.demo.util.CheckLogin;
import com.example.demo.util.JwtUtils;
import com.example.demo.util.TokenSign;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
import sun.misc.BASE64Encoder;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

@Slf4j
@RestController
//@CrossOrigin(origins = "http://localhost:63343", maxAge = 3600)
@RequestMapping(value = "/admin")
public class AdminController {
    @Autowired
    AdminService adminService;

    /*添加类型*/
    @RequestMapping(value = "/addType.do")
    public ResponseBo addType(TYPE type,HttpServletRequest request){
        log.info("进入 AdminController 类的 addType 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.addType(type);
        }catch (Exception e){
            log.error("AdminController 类的 addType 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 addType 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 addType 方法");
        return responseBo;
    }

    /*删除类型*/
    @RequestMapping(value = "/delType.do")
    public ResponseBo delType(int typeid,HttpServletRequest request){
        log.info("进入 AdminController 类的 delType 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.delType(typeid);
        }catch (Exception e){
            log.error("AdminController 类的 delType 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 delType 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 delType 方法");
        return responseBo;
    }

    /*更新类型*/
    @RequestMapping(value = "/updateType.do")
    public ResponseBo updateType(TYPE type,HttpServletRequest request){
        log.info("进入 AdminController 类的 updateType 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.updateType(type);
        }catch (Exception e){
            log.error("AdminController 类的 updateType 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("更新失败");
            log.info("退出 AdminController 类的 updateType 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 updateType 方法");
        return responseBo;
    }

    /*获取类型*/
//    @CrossOrigin
    @RequestMapping(value = "/getTypes.do")
    public ResponseBo getTypes(HttpServletRequest request){
        log.info("进入 AdminController 类的 getTypes 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.getTypes();
        }catch (Exception e){
            log.error("AdminController 类的 getTypes 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 getTypes 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 getTypes 方法");
        return responseBo;
    }

    /*根据归属获取类型*/
    @RequestMapping(value = "/getTypeByBelong.do")
    public ResponseBo getTypeByBelong(String belong,HttpServletRequest request){
        log.info("进入 AdminController 类的 getTypeByBelong 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        int belid=0;
        switch (belong){
            case "user":belid=6;break;
            case "news":belid=1;break;
            case "coop":belid=2;break;
            case "property":belid=3;break;
            case "info":belid=4;break;
            case "hr":belid=5;break;
            default:belid=0;break;
        }
        try{
            responseBo=adminService.getTypeByBelong(belid);
        }catch (Exception e){
            log.error("AdminController 类的 getTypeByBelong 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("获取失败");
            log.info("退出 AdminController 类的 getTypeByBelong 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 getTypeByBelong 方法");
        return responseBo;
    }

    /*获取类型归属*/
    @RequestMapping(value = "/getBelongs.do")
    public ResponseBo getBelongs(HttpServletRequest request){
        log.info("进入 AdminController 类的 getBelongs 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.getBelongs();
        }catch (Exception e){
            log.error("AdminController 类的 getBelongs 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 getBelongs 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 getBelongs 方法");
        return responseBo;
    }

    /*添加类型归属*/
    @RequestMapping(value = "/addBelong.do")
    public ResponseBo addBelong(BELONG belong,HttpServletRequest request){
        log.info("进入 AdminController 类的 addBelong 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.addBelong(belong);
        }catch (Exception e){
            log.error("AdminController 类的 addBelong 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 addBelong 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 addBelong 方法");
        return responseBo;
    }

    /*删除类型归属*/
    @RequestMapping(value = "/delBelong.do")
    public ResponseBo delBelong(int belid,HttpServletRequest request){
        log.info("进入 AdminController 类的 delBelong 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.delBelong(belid);
        }catch (Exception e){
            log.error("AdminController 类的 delBelong 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("删除失败");
            log.info("退出 AdminController 类的 delBelong 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 delBelong 方法");
        return responseBo;
    }

    /*更新类型归属*/
    @RequestMapping(value = "/updateBelong.do")
    public ResponseBo updateBelong(BELONG belong,HttpServletRequest request){
        log.info("进入 AdminController 类的 updateBelong 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.updateBelong(belong);
        }catch (Exception e){
            log.error("AdminController 类的 updateBelong 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("更新失败");
            log.info("退出 AdminController 类的 updateBelong 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 updateBelong 方法");
        return responseBo;
    }

    /*获取全部文本*/
    @RequestMapping(value = "/getTexts.do")
    public ResponseBo getTexts(HttpServletRequest request){
        log.info("进入 AdminController 类的 getTexts 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.getTexts();
        }catch (Exception e){
            log.error("AdminController 类的 getTexts 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("获取失败");
            log.info("退出 AdminController 类的 getTexts 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 getTexts 方法");
        return responseBo;
    }

    /*添加文本*/
    @RequestMapping(value = "/addText.do",method = {RequestMethod.POST,RequestMethod.GET})
    public ResponseBo addText(TEXT text, HttpServletRequest request){
        log.info("进入 AdminController 类的 addText 方法");
        StandardMultipartHttpServletRequest thisRequest = (StandardMultipartHttpServletRequest )request;
        MultipartFile file = thisRequest.getFile("img");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        String token=request.getHeader("accessToken");
        String userId = TokenSign.getUserId(token);
        int userid=Integer.parseInt(userId);
        text.setUserid(userid);
        try{
            responseBo=adminService.addText(text,file);
        }catch (Exception e){
            log.error("AdminController 类的 addText 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 addText 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 addText 方法");
        return responseBo;
    }

    /*删除文本*/
    @RequestMapping(value = "/delText.do")
    public ResponseBo delText(int textid,HttpServletRequest request){
        log.info("进入 AdminController 类的 delText 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.delText(textid);
        }catch (Exception e){
            log.error("AdminController 类的 delText 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("删除失败");
            log.info("退出 AdminController 类的 delText 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 delText 方法");
        return responseBo;
    }

    /*更新文本*/
    @RequestMapping(value = "/updateText.do")
    public ResponseBo updateText(TEXT text,HttpServletRequest request){
        log.info("进入 AdminController 类的 updateText 方法");
        MultipartHttpServletRequest multipartHttpServletRequest= (MultipartHttpServletRequest) request;
        MultipartFile file=multipartHttpServletRequest.getFile("img");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        String token=request.getHeader("accessToken");
        String userId = TokenSign.getUserId(token);
        int userid=Integer.parseInt(userId);
        text.setUserid(userid);
        try{
            responseBo=adminService.updateText(text,file);
        }catch (Exception e){
            log.error("AdminController 类的 updateText 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("更新失败");
            log.info("退出 AdminController 类的 updateText 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 updateText 方法");
        return responseBo;
    }

    /*获取全部留言*/
    @RequestMapping(value = "/getMessages.do")
    public ResponseBo getMessages(HttpServletRequest request){
        log.info("进入 AdminController 类的 getMessages 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.getMessages();
        }catch (Exception e){
            log.error("AdminController 类的 getMessages 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("获取失败");
            log.info("退出 AdminController 类的 getMessages 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 getMessages 方法");
        return responseBo;
    }

    /*添加留言*/
    @RequestMapping(value = "/addMessage.do")
    public ResponseBo addMessage(MESSAGE message,HttpServletRequest request){
        log.info("进入 AdminController 类的 addMessage 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.addMessage(message);
        }catch (Exception e){
            log.error("AdminController 类的 addMessage 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 addMessage 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 addMessage 方法");
        return responseBo;
    }

    /*删除留言*/
    @RequestMapping(value = "/delMessage.do")
    public ResponseBo delMessages(int mesid,HttpServletRequest request){
        log.info("进入 AdminController 类的 delMessage 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.delMessage(mesid);
        }catch (Exception e){
            log.error("AdminController 类的 delMessage 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("删除失败");
            log.info("退出 AdminController 类的 delMessage 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 delMessage 方法");
        return responseBo;
    }

    /*登录*/
//    @CrossOrigin
    @RequestMapping(value = "/login.do")
    public ResponseBo login(USER user, HttpServletRequest request){
        log.info("进入 AdminController 类的 login 方法");
        ResponseBo responseBo=new ResponseBo();
        String token = request.getHeader("accessToken");
        if (token!=null){
            if (TokenSign.verify(token)) {
                responseBo=adminService.getUserById(Integer.parseInt(TokenSign.getUserId(token)));
                responseBo.setResMsg("用户已登录");
            }
            else
                responseBo.setResMsg("token失效");
            return responseBo;
        }
//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (loginStat){
//            responseBo.setResMsg("用户已登录");
//            return responseBo;
//        }
        if (user.getName()==null||user.getPassword()==null){
            responseBo.setResMsg("用户名和密码不能为空");
            log.info("退出 AdminController 类的 login 方法");
            return responseBo;
        }
        try{
            responseBo=adminService.login(user,request);
        }catch (Exception e){
            log.error("AdminController 类的 login 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("登录失败");
            log.info("退出 AdminController 类的 login 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 login 方法");
        return responseBo;
    }

    /*注销*/
    @RequestMapping(value = "/logout.do")
    public ResponseBo logout(HttpServletRequest request){
        log.info("进入 AdminController 类的 logout 方法");
        ResponseBo responseBo=new ResponseBo();
        /*验证登录状态*/
//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.logout(request);
        }catch (Exception e){
            log.error("AdminController 类的 logout 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("注销失败");
            log.info("退出 AdminController 类的 logout 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 logout 方法");
        return responseBo;
    }

    /*获取全部用户*/
    @RequestMapping(value = "/getUsers.do")
    public ResponseBo getUsers(HttpServletRequest request){
        log.info("进入 AdminController 类的 getUsers 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.getUsers();
        }catch (Exception e){
            log.error("AdminController 类的 getUsers 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("获取失败");
            log.info("退出 AdminController 类的 getUsers 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 getUsers 方法");
        return responseBo;
    }

    /*根据id获取用户*/
    @RequestMapping(value = "/getUserById.do")
    public ResponseBo getUserById(HttpServletRequest request){
        log.info("进入 AdminController 类的 getUserById 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

//        HttpSession session=request.getSession();
        String token=request.getHeader("accessToken");
        String userId = TokenSign.getUserId(token);
        int userid= Integer.parseInt(userId);
        try{
            responseBo=adminService.getUserById(userid);
        }catch (Exception e){
            log.error("AdminController 类的 getUserById 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("获取失败");
            log.info("退出 AdminController 类的 getUserById 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 getUserById 方法");
        return responseBo;
    }


    /*删除用户*/
    @RequestMapping(value = "/delUser.do")
    public ResponseBo delUser(int userid,HttpServletRequest request){
        log.info("进入 AdminController 类的 delUser 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }
//        boolean permission=CheckLogin.checkPermission(request);
        String token=request.getHeader("accessToken");
        String userType = TokenSign.getUserType(token);
        if (!userType.equals("超级管理员")){
            responseBo.setResMsg("没有权限");
            return responseBo;
        }

        try{
            responseBo=adminService.delUser(userid);
        }catch (Exception e){
            log.error("AdminController 类的 delUser 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("删除失败");
            log.info("退出 AdminController 类的 delUser 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 delUser 方法");
        return responseBo;
    }

    /*添加用户*/
    @RequestMapping(value = "/addUser.do")
    public ResponseBo addUser(USER user,HttpServletRequest request){
        log.info("进入 AdminController 类的 addUser 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }
//        boolean permission=CheckLogin.checkPermission(request);
        String token=request.getHeader("accessToken");
        String userType = TokenSign.getUserType(token);
        if (!userType.equals("超级管理员")){
            responseBo.setResMsg("没有权限");
            return responseBo;
        }

        try{
            responseBo=adminService.addUser(user);
        }catch (Exception e){
            log.error("AdminController 类的 addUser 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 addUser 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 addUser 方法");
        return responseBo;
    }

    /*更新用户*/
    @RequestMapping(value = "/updateUser.do")
    public ResponseBo updateUser(USER user,HttpServletRequest request){
        log.info("进入 AdminController 类的 updateUser 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }
//        boolean permission=CheckLogin.checkPermission(request);
        String token=request.getHeader("accessToken");
        String userType = TokenSign.getUserType(token);
        if (!userType.equals("超级管理员")){
            responseBo.setResMsg("没有权限");
            return responseBo;
        }

        try{
            responseBo=adminService.updateUser(user);
        }catch (Exception e){
            log.error("AdminController 类的 updateUser 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("更新失败");
            log.info("退出 AdminController 类的 updateUser 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 updateUser 方法");
        return responseBo;
    }

    /*修改用户密码*/
    @RequestMapping(value = "/updateUserPass.do")
    public ResponseBo updateUserPass(USER user,HttpServletRequest request){
        log.info("进入 AdminController 类的 updateUserPass 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

//        HttpSession session=request.getSession();
        String token=request.getHeader("accessToken");
        String userId = TokenSign.getUserId(token);
        int userid=Integer.parseInt(userId);
        user.setId(userid);
        try{
            responseBo=adminService.updateUserPass(user);
        }catch (Exception e){
            log.error("AdminController 类的 updateUserPass 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("更新失败");
            log.info("退出 AdminController 类的 updateUserPass 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 updateUserPass 方法");
        return responseBo;
    }

    /*测试token*/
    @RequestMapping(value = "/testLogin.do", method = {RequestMethod.POST,RequestMethod.GET})
     public ResponseBo testLogin(USER user,HttpServletRequest request) {
        ResponseBo responseBo=new ResponseBo();
            String name = user.getName();
            String password = user.getPassword();
            USER userDB =new USER();
            userDB.setId(1);
            userDB.setName("abc");
            userDB.setPassword("123");
            userDB.setTname("管理员");
        //登录失败
            if (userDB == null || !userDB.getPassword().equals(password)||!userDB.getName().equals(name)) {
                    //既可以使用抛异常，也可使用直接返回错误码(推荐)
                    return new ResponseBo();
                } else {
                    //其他数据以map集合存放在token中
                    Map<String, Object> dataMap = new HashMap<>();
                    dataMap.put("userid", userDB.getId());
                    //生成token并存入数据返回
                    String token = TokenSign.sign(userDB.getName(),String.valueOf(userDB.getId()),userDB.getTname());
                    responseBo.setResMsg(userDB.getName());
                    responseBo.setResult(token);
                    return responseBo;
                }
        }

    /*测试解析token*/
    @RequestMapping(value = "/testLogin2.do", method = {RequestMethod.POST,RequestMethod.GET})
    public ResponseBo testLogin2(USER user,HttpServletRequest request) {
        ResponseBo responseBo=new ResponseBo();
        String token = request.getHeader("accessToken");
        String username=TokenSign.getUsername(token);

        responseBo.setResMsg("从Token中解析得到username:"+username);
        return responseBo;
    }

    /*获取合作公司*/
    @RequestMapping(value = "/getCoops.do")
    public ResponseBo getCoops(HttpServletRequest request){
        log.info("进入 AdminController 类的 getCoops 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.getCoops();
        }catch (Exception e){
            log.error("AdminController 类的 getCoops 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("获取失败");
            log.info("退出 AdminController 类的 getCoops 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 getCoops 方法");
        return responseBo;
    }

    /*删除合作公司*/
    @RequestMapping(value = "/delCoop.do")
    public ResponseBo delCoop(int coopid,HttpServletRequest request){
        log.info("进入 AdminController 类的 delCoop 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.delCoop(coopid);
        }catch (Exception e){
            log.error("AdminController 类的 delCoop 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("删除失败");
            log.info("退出 AdminController 类的 delCoop 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 delCoop 方法");
        return responseBo;
    }

    /*更新合作公司*/
    @RequestMapping(value = "/updateCoop.do")
    public ResponseBo updateCoop(COOPCOMPANY coopcompany,HttpServletRequest request){
        log.info("进入 AdminController 类的 updateCoop 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

//        HttpSession session=request.getSession();
        String token=request.getHeader("accessToken");
        String userId = TokenSign.getUserId(token);
        int userid=Integer.parseInt(userId);

        try{
            StandardMultipartHttpServletRequest multipartHttpServletRequest= (StandardMultipartHttpServletRequest) request;
            MultipartFile file=multipartHttpServletRequest.getFile("img");
            responseBo=adminService.updateCoop(coopcompany,file,userid);
        }catch (Exception e){
            log.error("AdminController 类的 updateCoop 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("更新失败");
            log.info("退出 AdminController 类的 updateCoop 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 updateCoop 方法");
        return responseBo;
    }

    /*添加合作公司*/
    @RequestMapping(value = "/addCoop.do",method = {RequestMethod.POST,RequestMethod.GET})
    public ResponseBo addCoop(COOPCOMPANY coopcompany, HttpServletRequest request){
        log.info("进入 AdminController 类的 addCoop 方法");
        StandardMultipartHttpServletRequest thisRequest = (StandardMultipartHttpServletRequest )request;
        MultipartFile file = thisRequest.getFile("img");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        String token=request.getHeader("accessToken");
        String userId = TokenSign.getUserId(token);
        int userid=Integer.parseInt(userId);
        try{
            responseBo=adminService.addCoop(coopcompany,file,userid);
        }catch (Exception e){
            log.error("AdminController 类的 addCoop 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 addCoop 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 addCoop 方法");
        return responseBo;
    }

    /*获取招聘信息*/
    @RequestMapping(value = "/getAdvs.do")
    public ResponseBo getAdvs(HttpServletRequest request){
        log.info("进入 AdminController 类的 getAdvs 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.getAdvs();
        }catch (Exception e){
            log.error("AdminController 类的 getAdvs 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("获取失败");
            log.info("退出 AdminController 类的 getAdvs 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 getAdvs 方法");
        return responseBo;
    }

    /*删除招聘信息*/
    @RequestMapping(value = "/delAdv.do")
    public ResponseBo delAdv(int advid,HttpServletRequest request){
        log.info("进入 AdminController 类的 delAdv 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.delAdv(advid);
        }catch (Exception e){
            log.error("AdminController 类的 delAdv 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("删除失败");
            log.info("退出 AdminController 类的 delAdv 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 delAdv 方法");
        return responseBo;
    }

    /*添加招聘信息*/
    @RequestMapping(value = "/addAdv.do")
    public ResponseBo addAdv(ADVERTISE advertise,HttpServletRequest request){
        log.info("进入 AdminController 类的 addAdv 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.addAdv(advertise);
        }catch (Exception e){
            log.error("AdminController 类的 addAdv 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("添加失败");
            log.info("退出 AdminController 类的 addAdv 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 addAdv 方法");
        return responseBo;
    }

    /*更新招聘信息*/
    @RequestMapping(value = "/updateAdv.do")
    public ResponseBo updateAdv(ADVERTISE advertise,HttpServletRequest request){
        log.info("进入 AdminController 类的 updateAdv 方法");
        ResponseBo responseBo=new ResponseBo();

//        boolean loginStat=CheckLogin.checkLogin(request);
//        if (!loginStat){
//            responseBo.setResMsg("用户未登录");
//            return responseBo;
//        }

        try{
            responseBo=adminService.updateAdv(advertise);
        }catch (Exception e){
            log.error("AdminController 类的 updateAdv 方法出现异常:");
            e.printStackTrace();
            responseBo.setResMsg("更新失败");
            log.info("退出 AdminController 类的 updateAdv 方法");
            return responseBo;
        }
        log.info("退出 AdminController 类的 updateAdv 方法");
        return responseBo;
    }

    @RequestMapping(value = "/getImg.do")
    public String  testImg(String imgname){
        log.info("进入 AdminController 类的 getImg 方法");
        String img="";
        try {
            InputStream in = new FileInputStream("D:/dhcProject/images/" + imgname);
            byte[] data = new byte[in.available()];
            in.read(data);
            in.close();
            BASE64Encoder encoder = new BASE64Encoder();
            img = encoder.encode(data);
        }catch (Exception e){
            log.error("AdminController 类的 getImg 方法出现异常");
            e.printStackTrace();
            return "出现异常:"+e.toString();
        }
        log.info("退出 AdminController 类的 getImg 方法");
        return img;
    }
}
